import {
	defineStore
} from 'pinia'
import {
	ref
} from 'vue'
import {
	request
} from '@/utils/http'

export const useCommunityStore = defineStore('community', () => {
	// 话题列表
	const topics = ref([])
	// 圈友列表
	const friends = ref([])

	// 获取话题列表
	const fetchTopics = async () => {
		try {
			uni.showLoading({
				title: '加载中...',
				mask: true
			})
			const res = await request.get('/api/community/topics')
			if (res.code === 200) {
				topics.value = res.data
				uni.hideLoading()
				return true
			} else {
				uni.hideLoading()
				uni.showToast({
					title: res.msg || '获取话题失败',
					icon: 'none'
				})
				return false
			}
		} catch (error) {
			console.error('获取话题列表失败:', error)
			uni.hideLoading()
			uni.showToast({
				title: '网络错误，请重试',
				icon: 'none'
			})
			return false
		}
	}

	// 添加话题
	const addTopic = async (topic) => {
		try {
			uni.showLoading({
				title: '提交中...',
				mask: true
			})
			const res = await request.post('/api/community/topics', topic)
			uni.hideLoading()

			if (res.code === 200) {
				uni.showToast({
					title: '添加话题成功',
					icon: 'success'
				})
				await fetchTopics() // 重新获取最新数据
				return true
			} else {
				uni.showToast({
					title: res.msg || '添加话题失败',
					icon: 'none'
				})
				return false
			}
		} catch (error) {
			console.error('添加话题失败:', error)
			uni.hideLoading()
			uni.showToast({
				title: '网络错误，请重试',
				icon: 'none'
			})
			return false
		}
	}

	// 获取圈友列表
	const fetchFriends = async () => {
		try {
			uni.showLoading({
				title: '加载中...',
				mask: true
			})
			const res = await request.get('/api/community/friends')
			if (res.code === 200) {
				friends.value = res.data
				uni.hideLoading()
				return true
			} else {
				uni.hideLoading()
				uni.showToast({
					title: res.msg || '获取圈友失败',
					icon: 'none'
				})
				return false
			}
		} catch (error) {
			console.error('获取圈友列表失败:', error)
			uni.hideLoading()
			uni.showToast({
				title: '网络错误，请重试',
				icon: 'none'
			})
			return false
		}
	}

	// 添加圈友
	const addFriend = async (friend) => {
		try {
			uni.showLoading({
				title: '提交中...',
				mask: true
			})
			const res = await request.post('/api/community/friends', friend)
			uni.hideLoading()

			if (res.code === 200) {
				uni.showToast({
					title: '添加圈友成功',
					icon: 'success'
				})
				await fetchFriends() // 重新获取最新数据
				return true
			} else {
				uni.showToast({
					title: res.msg || '添加圈友失败',
					icon: 'none'
				})
				return false
			}
		} catch (error) {
			console.error('添加圈友失败:', error)
			uni.hideLoading()
			uni.showToast({
				title: '网络错误，请重试',
				icon: 'none'
			})
			return false
		}
	}

	return {
		topics,
		friends,
		fetchTopics,
		addTopic,
		fetchFriends,
		addFriend
	}
})